/*
 * TabAtributos.h
 *
 *  Created on: 02/06/2013
 *      Author: juan
 */

#ifndef TABATRIBUTOS_H_
#define TABATRIBUTOS_H_


#include "Lavel.h"
#include "gtkmm/frame.h"
#include "gtkmm/notebook.h"
#include "gtkmm/box.h"
#include "gtkmm/box.h"
#include <gtkmm.h>

#include <map>

#include "model/clases/Atributo.h"
#include "model/Utils.h"


class TabAtributos: public Gtk::Frame {
public:
    TabAtributos();
    virtual ~TabAtributos();

    void insertarse(Gtk::Notebook& m_Notebook);

    void inicializarAtributos(std::vector<Atributo*>);
    std::vector<Atributo*> getAtributos();


protected:
    class ModelColumns : public Gtk::TreeModel::ColumnRecord{
        public:
          ModelColumns(){ add(visivilidad);add(tipo);
          add(nombre);add(valor);}
          Gtk::TreeModelColumn<Glib::ustring> visivilidad;
          Gtk::TreeModelColumn<Glib::ustring> tipo;
          Gtk::TreeModelColumn<Glib::ustring> nombre;
          Gtk::TreeModelColumn<Glib::ustring> valor;
    };


private:
    Gtk::VBox cajaPrincipal;

    Gtk::HBox cajaListaAtributos;
    Gtk::ScrolledWindow ventanaScrolleable;
    Gtk::TreeView treeView;
    Glib::RefPtr<Gtk::TreeStore> treeModel;
    ModelColumns columnas;


    Gtk::VBox cajaBotonesControlLista;
    Gtk::Button botonNuevo;
    Gtk::Button botonEliminar;

    Gtk::VBox cajaEdicionAtributo;
    Gtk::Frame frameEdicionAtributo;

    Lavel nombreAtributo;
    Lavel tipoAtributo;
    Lavel valorAtributo;

    Gtk::RadioButton::Group grupo;
    Gtk::RadioButton publico;
    Gtk::RadioButton privado;
    Gtk::RadioButton protegido;

    bool seleccionado_anterior;
    Gtk::TreeModel::Row row_anterior;

    void on_row_activated(const Gtk::TreeModel::Path& path, Gtk::TreeViewColumn* column);

    void on_button_Nuevo_clicked();
    void on_button_Eliminar_clicked();

    void limpiar_campos();

    void actualizar_datos();
    int numeroAtributo;

    void desactivar_entradas();
    void activar_entradas();

};

#endif /* TABATRIBUTOS_H_ */
